package com.iflytek.controller;

import com.iflytek.common.Result;
import com.iflytek.dto.CategoryDTO;
import com.iflytek.dto.PageDTO;
import com.iflytek.service.CategoryService;
import com.iflytek.vo.CategoryVO;
import com.iflytek.vo.PageVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 *
 * @author h_t
 * @since 2023-09-23
 */
@RestController
@RequestMapping("/api/category")
public class CategoryController{
    @Resource
    public CategoryService categoryService;

    /**
     * 获取所有书籍分类
     * @return
     */
    @ApiOperation("获取所有书籍分类")
    @GetMapping("")
    Result<List<CategoryVO>> findAll() {
        return categoryService.findAll();
    }

    /**
     * 分类保存
     * @param dto
     * @return
     */
    @ApiOperation("分类保存")
    @PostMapping("")
    Result<Boolean> saveCategory(@RequestBody CategoryDTO dto) {
        return categoryService.saveCategory(dto);
    }

    /**
     * 更新分类信息
     * @param dto
     * @return
     */
    @ApiOperation("更新分类信息")
    @PutMapping("")
    Result<Boolean> updateCategory(@RequestBody CategoryDTO dto) {
        return categoryService.updateCategory(dto);
    }

    /**
     * 分页查询分类
     * @param dto
     * @return
     */
    @ApiOperation("分页查询分类")
    @GetMapping("/page/front")
    public Result<PageVO<CategoryVO>> getPage(PageDTO<CategoryDTO> dto) {
        return categoryService.getPage(dto);
    }


    /**
     * 通过id获取分类详情
     * @param id
     * @return
     */
    @ApiOperation("通过id获取分类详情")
    @PostMapping("/{id}")
    Result<CategoryVO> findById(@PathVariable("id") Integer id) {
        return categoryService.findById(id);
    }

    /**
     * 根据id删除分类
     * @param id
     * @return
     */
    @ApiOperation("根据id删除分类")
    @DeleteMapping("/{id}")
    Result<CategoryVO> deleteById(@PathVariable("id") Integer id) {
        return categoryService.deleteById(id);
    }

}

